/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Reportes;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import net.sf.jasperreports.engine.JRException;
//import net.sf.jasperreports.engine.JRExporter;
//import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
//import net.sf.jasperreports.engine.export.JRPdfExporter;
//import net.sf.jasperreports.engine.export.JRXlsExporter;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JasperViewer;

/**
 *
 * @author CHA70
 */
public class GeneradordeReportes {
    
     public GeneradordeReportes ()
    {   
        
    }
    
    private Connection conexionBaseDeDatos() throws ClassNotFoundException, SQLException
    {
        Class.forName("com.mysql.jdbc.Driver"); 
        Connection conexion = DriverManager.getConnection("jdbc:mysql://localhost:3306/caleneer", "root", "Jorge92");
        return conexion;
    }
    
    // metodos que retornaran un JasperPrint para ser impresos
    
    private JasperPrint GenerarReportesDeCatedraticos(String pathRaiz,String ciclo,String nombreCatedratico,String apellidoCatedratico) throws ClassNotFoundException, SQLException, JRException
    {    
         JasperReport reporte = (JasperReport) JRLoader.loadObject(pathRaiz);
         Map<String, Object> parametros = new HashMap<String, Object>();
         parametros.put("NombreCatedratico", nombreCatedratico);      
         parametros.put("ApellidoCatedratico", apellidoCatedratico);
         parametros.put("Ciclo", ciclo);
         JasperPrint jasperPrint = JasperFillManager.fillReport(reporte,parametros,conexionBaseDeDatos());
         return jasperPrint;
    }
    
    private JasperPrint GenerarReportesDeHorariosGeneralesPorSemestre(String pathRaiz,String carrera,String semestre,String año) throws ClassNotFoundException, SQLException, JRException
    {    
         JasperReport reporte = (JasperReport) JRLoader.loadObject(pathRaiz);
         Map<String, Object> parametros = new HashMap<String, Object>();
         parametros.put("Carrera", carrera);      
         parametros.put("Semestre", semestre);
         parametros.put("Año", año);
         JasperPrint jasperPrint = JasperFillManager.fillReport(reporte,parametros,conexionBaseDeDatos());
         return jasperPrint;
    }
    
     private JasperPrint GenerarReportesDeHorariosCatedraticosPorCiclo(String pathRaiz,String nombreCatedratico,String apellidoCatedratico,String ciclo) throws ClassNotFoundException, SQLException, JRException
    {    
         JasperReport reporte = (JasperReport) JRLoader.loadObject(pathRaiz);
         Map<String, Object> parametros = new HashMap<String, Object>();
         parametros.put("NombreCatedratico", nombreCatedratico);      
         parametros.put("ApellidoCatedratico", apellidoCatedratico);
         parametros.put("Ciclo", ciclo);
         JasperPrint jasperPrint = JasperFillManager.fillReport(reporte,parametros,conexionBaseDeDatos());
         return jasperPrint;
    }
     
      private JasperPrint GenerarReportesDeHorariosCatedraticosPorSemestre(String pathRaiz,String semestre,String nombreCatedratico,String apellidoCatedratico,String año) throws ClassNotFoundException, SQLException, JRException
    {    
         JasperReport reporte = (JasperReport) JRLoader.loadObject(pathRaiz);
         Map<String, Object> parametros = new HashMap<String, Object>();
         parametros.put("Semestre", semestre);      
         parametros.put("NombreCatedratico", nombreCatedratico);      
         parametros.put("ApellidoCatedratico", apellidoCatedratico);
         parametros.put("Año",año);
         JasperPrint jasperPrint = JasperFillManager.fillReport(reporte,parametros,conexionBaseDeDatos());
         return jasperPrint;
    }
    
    private JasperPrint GenerarReportesHorariosGenerales(String pathRaiz,String ciclo, String nombreCarrera) throws ClassNotFoundException, SQLException, JRException
    {    
         JasperReport reporte = (JasperReport) JRLoader.loadObject(pathRaiz);
         Map<String, Object> parametros = new HashMap<String, Object>();
         parametros.put("NombreCarrera", nombreCarrera);
         parametros.put("Ciclo", ciclo);     
         JasperPrint jasperPrint = JasperFillManager.fillReport(reporte,parametros,conexionBaseDeDatos());
         return jasperPrint;
    }
    
    private JasperPrint GenerarReportesNominaFacultad(String pathRaiz,String facultad, String ciclo) throws ClassNotFoundException, SQLException, JRException
    {    
         JasperReport reporte = (JasperReport) JRLoader.loadObject(pathRaiz);
         Map<String, Object> parametros = new HashMap<String, Object>();
         parametros.put("Facultad", facultad);
         parametros.put("Ciclo", ciclo);     
         JasperPrint jasperPrint = JasperFillManager.fillReport(reporte,parametros,conexionBaseDeDatos());
         return jasperPrint;
    }
    
    private JasperPrint GenerarReportesDeCursos(String pathRaiz,String ciclo, String facultad) throws ClassNotFoundException, SQLException, JRException
    {    
         JasperReport reporte = (JasperReport) JRLoader.loadObject(pathRaiz);
         Map<String, Object> parametros = new HashMap<String, Object>();
         parametros.put("Facultad", facultad);
         parametros.put("Ciclo", ciclo);     
         JasperPrint jasperPrint = JasperFillManager.fillReport(reporte,parametros,conexionBaseDeDatos());
         return jasperPrint;
    }
    
     private JasperPrint GenerarReportesDeHorariosGeneralesPorCiclo(String pathRaiz,String carrera, String ciclo) throws ClassNotFoundException, SQLException, JRException
    {    
         JasperReport reporte = (JasperReport) JRLoader.loadObject(pathRaiz);
         Map<String, Object> parametros = new HashMap<String, Object>();
         parametros.put("Carrera", carrera);
         parametros.put("Ciclo", ciclo);     
         JasperPrint jasperPrint = JasperFillManager.fillReport(reporte,parametros,conexionBaseDeDatos());
         return jasperPrint;
    }
    
    
    private JasperPrint GenerarReportesDeAulas(String pathRaiz) throws ClassNotFoundException, SQLException, JRException
    {    
         JasperReport reporte = (JasperReport) JRLoader.loadObject(pathRaiz);   
         JasperPrint jasperPrint = JasperFillManager.fillReport(reporte,null,conexionBaseDeDatos());
         return jasperPrint;
    }
    
    // metodos para guardar y abrir 
    
    public boolean guardarAbrirReportesAulas(String pathRaiz)
    {
        try
        { 
            JasperViewer.viewReport(GenerarReportesDeAulas(pathRaiz));
            return true;
        }
        catch (Exception e)
        {
              return false;
        }
                
    }
    public boolean guardarAbrirReportesHorariosGenerales(String pathRaiz,String ciclo, String nombreCarrera)
    {
        try
        { 
            JasperViewer.viewReport(GenerarReportesHorariosGenerales(pathRaiz,ciclo,nombreCarrera));
            return true;
        }
        catch (Exception e)
        {
              return false;
        }
                
    }
    
    public boolean guardarAbrirReportesNominaPorFacultad( String pathRaiz,String facultad, String ciclo)
    {
        try
        { 
            JasperViewer.viewReport( GenerarReportesNominaFacultad(pathRaiz,facultad,ciclo));
            return true;
        }
        catch (Exception e)
        {
              return false;
        }
                
    }
    public boolean guardarAbrirReportesDeCursos(String pathRaiz,String ciclo, String facultad)
    {
        try
        { 
            JasperViewer.viewReport(GenerarReportesDeCursos(pathRaiz,ciclo,facultad));
            return true;
        }
        catch (Exception e)
        {
              return false;
        }
                
    }
    
     public boolean guardarAbrirReportesDeHorariosGeneralesPorCiclo(String pathRaiz,String carrera, String ciclo)
    {
        try
        { 
            JasperViewer.viewReport(GenerarReportesDeHorariosGeneralesPorCiclo(pathRaiz,carrera,ciclo));
            return true;
        }
        catch (Exception e)
        {
              return false;
        }
                
    }
    
       public boolean guardarAbrirReportesHorarioCatedraticos(String pathRaiz,String ciclo, String nombreCatedratico,String apellidoCatedratico)
    {
        try
        { 
            JasperViewer.viewReport(GenerarReportesDeCatedraticos(pathRaiz,ciclo,nombreCatedratico,apellidoCatedratico));
            return true;
        }
        catch (Exception e)
        {
              return false;
        }
                
    }
       
     public boolean guardarAbrirReportesHorarioCatedraticosPorSemestre(String pathRaiz,String año, String nombreCatedratico,String apellidoCatedratico,String semestre)
    {
        try
        { 
            JasperViewer.viewReport(GenerarReportesDeHorariosCatedraticosPorSemestre(pathRaiz,semestre,nombreCatedratico,apellidoCatedratico,año));
            return true;
        }
        catch (Exception e)
        {
              return false;
        }
                
    }
       
        public boolean guardarAbrirReportesHorarioCatedraticosPorCiclo(String pathRaiz,String ciclo, String nombreCatedratico,String apellidoCatedratico)
    {
        try
        { 
            JasperViewer.viewReport(GenerarReportesDeHorariosCatedraticosPorCiclo(pathRaiz,nombreCatedratico,apellidoCatedratico,ciclo));
            return true;
        }
        catch (Exception e)
        {
              return false;
        }
                
    }
       
       public boolean guardarAbrirReportesHorariosGeneralesPorSemestre(String pathRaiz,String carrera, String semestre,String año)
    {
        try
        { 
            JasperViewer.viewReport(GenerarReportesDeHorariosGeneralesPorSemestre(pathRaiz,carrera,semestre,año));
            return true;
        }
        catch (Exception e)
        {
              return false;
        }
                
    }
       
       
       
    
    
    
}
